package org.iut.gepromis.domain;

import javax.persistence.Entity;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.tostring.RooToString;
import org.springframework.roo.addon.entity.RooEntity;
import java.util.Date;

import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.springframework.format.annotation.DateTimeFormat;
import org.iut.gepromis.domain.TipoStatus;
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Set;
import javax.persistence.ManyToMany;
import javax.persistence.CascadeType;
import org.iut.gepromis.domain.Aldea;

@Entity
@RooJavaBean
@RooToString
@RooEntity
public class Proyecto {
	@ManyToOne
	private Aldea aldea;

	@NotNull
	private String codigoProyecto;

	@NotNull
	private String nombreProyecto;

	@NotNull
	@Size(min = 20, max = 400)
	private String descripcionProyecto;

	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(style = "S-")
	private Date fechaInicioEstimadaProyecto;

	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(style = "S-")
	private Date fechaCulminacionEstimadaProyecto;

	private String participantesProyectos;
	// TODO: colocar la validacion de los valores permitidos 0-100%
	private Short porcentajeAvanceProyecto;

	@ManyToOne(targetEntity = TipoStatus.class)
	@JoinColumn
	private TipoStatus statusGlobalDelProyecto;

	@ManyToOne(targetEntity = TipoStatus.class)
	@JoinColumn
	private TipoStatus statusFaseDiagnosticoDelProyecto;

	@ManyToOne(targetEntity = TipoStatus.class)
	@JoinColumn
	private TipoStatus statusFasePlanificacionDelProyecto;
	
	@ManyToOne(targetEntity = TipoStatus.class)
	@JoinColumn
	private TipoStatus statusFaseEjecucionDelProyecto;
	
	@ManyToOne(targetEntity = TipoStatus.class)
	@JoinColumn
	private TipoStatus statusFaseEvaluacionDelProyecto;
	
	
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(style = "S-")
	private Date fechaCreacionProyecto;

	@OneToMany
	private Set<org.iut.gepromis.domain.Anexo> documentosAnexadoAlProyecto = new java.util.HashSet<org.iut.gepromis.domain.Anexo>();

	
	
}
